home *** CD-ROM | disk | FTP | other *** search
- /*
- This file contains functions to generate OBJECT and EMBED tags for QuickTime content.
- These functions assemble the tags from parameters passed to them as parameters.
-
- QT_WriteOBJECT() - generate HTML tags and insert them into the calling document
- QT_WriteOBJECT_XHTML() - generate XHTML tags and insert them into the calling document
-
- QT_GenerateOBJECTText() - generate HTML tags and return them as a string
- QT_GenerateOBJECTText_XHTML() - generate XHTML tags and return them as a string
-
- AC_QuickTimeVersion() - return the version of this file as a floating point number.
-
- To call one of these functions, pass the url, width, height, and required ActiveX
- control version as parameters 1 through 4, and pass all other attributes and
- parameters that you would otherwise specify for the OBJECT, PARAM, and EMBED
- tags as pairs of parameters:
-
- <script language="JavaScript" type="text/javascript">
- QT_WriteOBJECT(srcURL, width, height, activeXVersion,
- "attributeName1", "attributeValue1",
- "attributeName1", "attributeValue2",
- "attributeName1", "attributeValue3",
- "attributeName1", "attributeValue4",
- ...
- "attributeNameN", "attributeValueN"
- );
- </script>
-
- These functions automatically add the "classid", "codebase", and "pluginspage" tags to
- the OBJECT and/or EMBED tags with standard values if they are not specified in the
- parameter list, so you need not supply these tags unless you require non-standard values.
-
- Although the OBJECT and EMBED tags typically have the same attributes and parameters, it
- is sometimes useful to have different values for each.
- Any attribute name prefixed with "obj#" is added to the OBJECT tag only, any attribute
- name prefixed with "emb#" is added to the EMBED tag only.
-
- <script language="JavaScript" type="text/javascript">
- QT_WriteOBJECT('http://www.domain.com/sample.mov', '480', '288', ''
- , 'emb#bgcolor', '#FFFFFF');
- </script>
-
- */
-
- /************** LOCALIZABLE GLOBAL VARIABLES ****************/
-
- var gArgCountErr = 'The "%%" function requires an even number of arguments.'
- + '\nArguments should be in the form "atttributeName", "attributeValue", ...';
-
- /******************** END LOCALIZABLE **********************/
-
- var gTagAttrs = null;
- var gQTGeneratorVersion = 0.8;
-
- function AC_QuickTimeVersion() { return gQTGeneratorVersion; }
-
- function _QTComplain(callingFcnName, errMsg)
- {
- errMsg = errMsg.replace("%%", callingFcnName);
- alert(errMsg);
- }
-
- function _QTAddAttribute(prefix, slotName, tagName)
- {
- var value;
-
- value = gTagAttrs[prefix + slotName];
- if ( null == value )
- value = gTagAttrs[slotName];
-
- if ( null != value )
- {
- if ( 0 == slotName.indexOf(prefix) && (null == tagName) )
- tagName = slotName.substring(prefix.length);
- if ( null == tagName )
- tagName = slotName;
- return tagName + '="' + value + '" ';
- }
- else
- return "";
- }
-
- function _QTAddObjectAttr(slotName, tagName)
- {
- // don't bother if it is only for the embed tag
- if ( 0 == slotName.indexOf("emb#") )
- return "";
-
- if ( 0 == slotName.indexOf("obj#") && (null == tagName) )
- tagName = slotName.substring(4);
-
- return _QTAddAttribute("obj#", slotName, tagName);
- }
-
- function _QTAddEmbedAttr(slotName, tagName)
- {
- // don't bother if it is only for the object tag
- if ( 0 == slotName.indexOf("obj#") )
- return "";
-
- if ( 0 == slotName.indexOf("emb#") && (null == tagName) )
- tagName = slotName.substring(4);
-
- return _QTAddAttribute("emb#", slotName, tagName);
- }
-
-
- function _QTAddObjectParam(slotName, generateXHTML)
- {
- var paramValue;
- var paramStr = "";
- var endTagChar = (generateXHTML) ? ' />' : '>';
-
- if ( -1 == slotName.indexOf("emb#") )
- {
- // look for the OBJECT-only param first. if there is none, look for a generic one
- paramValue = gTagAttrs["obj#" + slotName];
- if ( null == paramValue )
- paramValue = gTagAttrs[slotName];
-
- if ( 0 == slotName.indexOf("obj#") )
- slotName = slotName.substring(4);
-
- if ( null != paramValue )
- paramStr = ' <param name="' + slotName + '" value="' + paramValue + '"' + endTagChar + '\n';
- }
-
- return paramStr;
- }
-
- function _QTDeleteTagAttrs()
- {
- for ( var ndx = 0; ndx < arguments.length; ndx++ )
- {
- var attrName = arguments[ndx];
- delete gTagAttrs[attrName];
- delete gTagAttrs["emb#" + attrName];
- delete gTagAttrs["obj#" + attrName];
- }
- }
-
-
-
- // generate an embed and object tag, return as a string
- function _QTGenerate(callingFcnName, generateXHTML, args)
- {
- // is the number of optional arguments even?
- if ( args.length < 4 || (0 != (args.length % 2)) )
- {
- _QTComplain(callingFcnName, gArgCountErr);
- return "";
- }
-
- // allocate an array, fill in the required attributes with fixed place params and defaults
- gTagAttrs = new Array();
- gTagAttrs["src"] = args[0];
- gTagAttrs["width"] = args[1];
- gTagAttrs["height"] = args[2];
- gTagAttrs["classid"] = "clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B";
- gTagAttrs["pluginspage"] = "http://www.apple.com/quicktime/download/";
-
- // set up codebase attribute with specified or default version before parsing args so
- // anything passed in will override
- var activexVers = args[3]
- if ( (null == activexVers) || ("" == activexVers) )
- activexVers = "6,0,2,0";
- gTagAttrs["codebase"] = "http://www.apple.com/qtactivex/qtplugin.cab#version=" + activexVers;
-
- var attrName,
- attrValue;
-
- // add all of the optional attributes to the array
- for ( var ndx = 4; ndx < args.length; ndx += 2)
- {
- attrName = args[ndx].toLowerCase();
- attrValue = args[ndx + 1];
-
- // "name" and "id" should have the same value, the former goes in the embed and the later goes in
- // the object. use one array slot
- if ( "name" == attrName || "id" == attrName )
- gTagAttrs["name"] = attrValue;
-
- else
- gTagAttrs[attrName] = attrValue;
- }
-
- // init both tags with the required and "special" attributes
- var objTag = '<object '
- + _QTAddObjectAttr("classid")
- + _QTAddObjectAttr("width")
- + _QTAddObjectAttr("height")
- + _QTAddObjectAttr("codebase")
- + _QTAddObjectAttr("name", "id")
- + _QTAddObjectAttr("tabindex")
- + _QTAddObjectAttr("hspace")
- + _QTAddObjectAttr("vspace")
- + _QTAddObjectAttr("border")
- + _QTAddObjectAttr("align")
- + _QTAddObjectAttr("class")
- + _QTAddObjectAttr("title")
- + _QTAddObjectAttr("accesskey")
- + _QTAddObjectAttr("noexternaldata")
- + '>\n'
- + _QTAddObjectParam("src", generateXHTML);
- var embedTag = ' <embed '
- + _QTAddEmbedAttr("src")
- + _QTAddEmbedAttr("width")
- + _QTAddEmbedAttr("height")
- + _QTAddEmbedAttr("pluginspage")
- + _QTAddEmbedAttr("name")
- + _QTAddEmbedAttr("align")
- + _QTAddEmbedAttr("tabindex");
-
- // delete the attributes/params we have already added
- _QTDeleteTagAttrs("src","width","height","pluginspage","classid","codebase","name","tabindex",
- "hspace","vspace","border","align","noexternaldata","class","title","accesskey");
-
- // and finally, add all of the remaining attributes to the embed and object
- for ( var attrName in gTagAttrs )
- {
- attrValue = gTagAttrs[attrName];
- if ( null != attrValue )
- {
- embedTag += _QTAddEmbedAttr(attrName);
- objTag += _QTAddObjectParam(attrName, generateXHTML);
- }
- }
-
- // end both tags, we're done
- return objTag + embedTag + '> </em' + 'bed>\n</ob' + 'ject' + '>';
- }
-
- // return the object/embed as a string
- function QT_GenerateOBJECTText()
- {
- return _QTGenerate("QT_GenerateOBJECTText", false, arguments);
- }
-
- function QT_GenerateOBJECTText_XHTML()
- {
- return _QTGenerate("QT_GenerateOBJECTText_XHTML", true, arguments);
- }
-
- function QT_WriteOBJECT()
- {
- document.writeln(_QTGenerate("QT_WriteOBJECT", false, arguments));
- }
-
- function QT_WriteOBJECT_XHTML()
- {
- document.writeln(_QTGenerate("QT_WriteOBJECT_XHTML", true, arguments));
- }
-
-
-